<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript">
    require([ "dojo/_base/array", "dojo/_base/xhr", "dojo/request", "dojo/topic", "dojo/json" ], function(array, xhr,
            request, topic, JSON) {
        var syncDB = function(url, jsonData) {
            request.post(url, {
                data : jsonData,
                headers : {
                    'Content-Type' : "application/json; charset=utf-8"
                },
                timeout : 30000
            }).then(function(response) {
                topic.publish("notifyMsgTopic", {
                    message : response,
                    type : "message",
                    duration : 1000
                });
                jQuery("#sysrolepermitInGird").trigger("reloadGrid");
                jQuery("#sysrolepermitOutGird").trigger("reloadGrid");
            }, function(error) {
                alert(error);
            });
        };
        sysrolepermitSubmitForm = function() {
            var id = jQuery("#sysrolepermitGird").jqGrid('getGridParam', 'selrow');
            if (id == null) {
                alert('请选择一个角色!');
            } else {
                var inIds = jQuery("#sysrolepermitInGird").jqGrid("getGridParam", "selarrrow") || [];
                var outIds = jQuery("#sysrolepermitOutGird").jqGrid("getGridParam", "selarrrow") || [];
                if (inIds.length == 0 && outIds.length == 0) {
                    alert('请选择添加或移除至少一个权限!');
                } else {
                    var sysrolepermitList = [];
                    var sysrole = jQuery("#sysrolepermitGird").jqGrid('getRowData', id);
                    for ( var i = 0; i < inIds.length; i++) {
                        var syspermit = jQuery("#sysrolepermitInGird").jqGrid('getRowData', inIds[i]);
                        var sysrolepermit = {
                            roleid : sysrole.roleId,
                            permitid : syspermit.permitid,
                            type : 'in'
                        };
                        sysrolepermitList.push(sysrolepermit);
                    }
                    for ( var i = 0; i < outIds.length; i++) {
                        var syspermit = jQuery("#sysrolepermitOutGird").jqGrid('getRowData', outIds[i]);
                        var sysrolepermit = {
                            roleid : sysrole.roleId,
                            permitid : syspermit.permitid,
                            type : 'out'
                        };
                        sysrolepermitList.push(sysrolepermit);
                    }
                    var url = "sysrolepermit/insert";
                    syncDB(url, JSON.stringify(sysrolepermitList));
                }
            }
        };
    });
</script>
<fieldset>
  <legend>&nbsp;&nbsp;操作&nbsp;&nbsp;</legend>
  <p style="font-size: 1em; font-weight: bolder; color: blue; text-indent: 2em;">选择一个角色, 中间列表显示已拥有的权限,
    右侧列表显示可分配权限列表, 勾选中间列表选项保存时将去除勾选的权限, 右侧列表与之相反. 点击'保存'按钮进行角色权限分配!</p>
  <div style="padding: 5px;">
    <button data-dojo-type="dijit/form/Button" type="button" label="保存" onclick="sysrolepermitSubmitForm();"></button>
  </div>
</fieldset>
<div style="float: left; width: 300px;">
  <table id="sysrolepermitGird"></table>
  <div id="sysrolepermitToolbar"></div>
</div>
<div style="float: left; margin-left: 3%; width: 300px;">
  <table id="sysrolepermitInGird"></table>
  <div id="sysrolepermitInToolbar"></div>
</div>
<div style="float: right; width: 300px;">
  <table id="sysrolepermitOutGird"></table>
  <div id="sysrolepermitOutToolbar"></div>
</div>
<script type="text/javascript">
    jQuery("#sysrolepermitGird").jqGrid({
        url : 'sysrole/queryAsList',
        datatype : "json",
        autowidth : true,
        rownumbers : true,
        height : 300,
        colNames : [ '角色ID', '角色名称', '角色描述' ],
        colModel : [ {
            name : 'roleId',
            index : 'roleId',
            width : 60,
            key : true,
            hidden : true,
            align : 'center'
        }, {
            name : 'roleName',
            index : 'roleName',
            width : 100
        }, {
            name : 'description',
            index : 'description',
            width : 150
        } ],
        rowNum : 15,
        rowList : [ 15, 20, 25, 30 ],
        pager : '#sysrolepermitToolbar',
        recordpos : 'right',
        viewrecords : false,
        sortorder : "desc",
        jsonReader : {
            repeatitems : false
        },
        multiselect : false,
        shrinkToFit : false,
        onSelectRow : function(ids) {
            if (ids != null) {
                var sysrole = jQuery("#sysrolepermitGird").jqGrid('getRowData', ids);
                jQuery("#sysrolepermitInGird").jqGrid('setGridParam', {
                    postData : {
                        roleid : sysrole.roleId
                    }
                }).trigger('reloadGrid');
                jQuery("#sysrolepermitOutGird").jqGrid('setGridParam', {
                    postData : {
                        roleid : sysrole.roleId
                    }
                }).trigger('reloadGrid');
            }
        },
        caption : "角色列表"
    });
    jQuery("#sysrolepermitGird").jqGrid('navGrid', '#sysrolepermitToolbar', {
        edit : false,
        add : false,
        del : false,
        search : false,
        refresh : true
    });
    jQuery("#sysrolepermitInGird").jqGrid({
        url : 'sysrolepermit/queryAsList/in',
        datatype : "json",
        autowidth : true,
        rownumbers : false,
        height : 300,
        colNames : [ '权限ID', '权限名称', '描述' ],
        colModel : [ {
            name : 'permitid',
            index : 'permitid',
            width : 60,
            key : true,
            hidden : true,
            align : 'center'
        }, {
            name : 'permitname',
            index : 'permitname',
            width : 100
        }, {
            name : 'description',
            index : 'description',
            width : 150
        } ],
        rowNum : 15,
        rowList : [ 15, 20, 25, 30 ],
        pager : '#sysrolepermitInToolbar',
        recordpos : 'right',
        viewrecords : false,
        sortorder : "desc",
        jsonReader : {
            repeatitems : false
        },
        multiselect : true,
        shrinkToFit : false,
        caption : "拥有权限列表"
    });
    jQuery("#sysrolepermitInGird").jqGrid('navGrid', '#sysrolepermitInToolbar', {
        edit : false,
        add : false,
        del : false,
        search : false,
        refresh : true
    });
    jQuery("#sysrolepermitOutGird").jqGrid({
        url : 'sysrolepermit/queryAsList/out',
        datatype : "json",
        autowidth : true,
        rownumbers : false,
        height : 300,
        colNames : [ '权限ID', '权限名称', '描述' ],
        colModel : [ {
            name : 'permitid',
            index : 'permitid',
            width : 60,
            key : true,
            hidden : true,
            align : 'center'
        }, {
            name : 'permitname',
            index : 'permitname',
            width : 100
        }, {
            name : 'description',
            index : 'description',
            width : 150
        } ],
        rowNum : 15,
        rowList : [ 15, 20, 25, 30 ],
        pager : '#sysrolepermitOutToolbar',
        recordpos : 'right',
        viewrecords : false,
        sortorder : "desc",
        jsonReader : {
            repeatitems : false
        },
        multiselect : true,
        shrinkToFit : false,
        caption : "未包含权限列表"
    });
    jQuery("#sysrolepermitOutGird").jqGrid('navGrid', '#sysrolepermitOutToolbar', {
        edit : false,
        add : false,
        del : false,
        search : false,
        refresh : true
    });
</script>